This invention relates to the field of computer systems. More particularly, a system and methods are provided for using a multi-layer perceptron or recursive network combined with an iterative graph partitioner to facilitate the automated selection of an improved configuration of computer resources to be achieved via dynamic reconfiguration.
Dynamic reconfiguration involves the dynamic allocation, reallocation or deallocation of computer system resources such as processors, memory, storage devices and so on. If done in an efficient and intelligent manner, dynamic reconfiguration can be used to arrange or re-arrange resources to meet the shifting demands of software executing on the system, and thereby promote more efficient use of the system resources.
However, dynamically reconfiguring a resource generally requires removing it from a current domain or set of resources that are providing one service, or working on one task, and adding it to a different domain. In order to remove the resource from a domain, all dependencies involving that resource must be identified and resolved. Most systems (e.g., some UNIX platforms) do not provide means for readily mapping a resource from its underlying physical device upward through all logical constructs built upon the device, or vice versa, and therefore make it difficult to identify such dependencies. In particular, protocol-based methods of determining resource dependencies do not track dependencies as they evolve, and thus do not allow accurate prediction of whether a desired dynamic reconfiguration operation is likely to succeed.
Instead, existing methods of dynamic reconfiguration require a reconfiguration operation to be attempted before its chance of success can be determined. In addition, some systems only allow for the reallocation or reassignment of virtual or logical resources, not physical resources.
Thus, when a dynamic reconfiguration of a particular resource is desired, protocol calls may be made to the resource's configuration software or device driver. Calls may also be made to various other configuration agents to determine whether they have any dependencies with the resource. A series of recursive calls may have to be made to trace chains of dependencies. After dependent devices are identified, the dynamic reconfiguration is attempted, with little predictability, if any, as to its success.
While attempting to determine the resource's dependencies, or attempting the actual reconfiguration, those dependencies may be changing (e.g., new dependencies may be added). Or, a device may refuse to release the resource when requested. As a result, the reconfiguration may fail because the resource has not been freed from all dependencies.
In addition, current methods of identifying and attempting dynamic resource reconfigurations are manual. The efficiency of selecting and implementing a dynamic reconfiguration could be improved by making the process automatic. In particular, it would be desirable for a system of resources to autonomously identify a better configuration or allocation scheme for its resources, and then perform a dynamic reconfiguration to attain that configuration. Such a system might periodically or continually search for better configurations.
However, identifying a configuration that is “better” than another (e.g., current) configuration can be difficult. Existing systems designed to identify a desirable reconfiguration of resources usually employ mathematical models. Such models are often flawed, particularly in their inability to accurately determine whether the performance of one configuration of resources would provide better performance than another configuration. Further, such models may be unable to identify a configuration that not only provided increased performance, but which also satisfies a set of constraints on system resources.
Thus, there is a need for a system and method for identifying a desirable reconfiguration of a set of resources, wherein the resources as reconfigured would dependably yield better system performance (e.g., in terms of some objective function) and would not violate any system constraints.